package cn.eaay.stock.mapper;

import cn.eaay.stock.pojo.StockRtInfo;
import cn.eaay.stock.vo.stock.StockRtInfoVo;
import cn.eaay.stock.vo.stock.StockWeekVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author yangjiachang
 * @description 针对表【stock_rt_info(个股详情信息表)】的数据库操作Mapper
 * @createDate 2022-02-12 16:02:46
 * @Entity cn.eaay.stock.pojo.StockRtInfo
 */
public interface StockRtInfoMapper {

    int deleteByPrimaryKey(Long id);

    int insert(StockRtInfo record);

    int insertSelective(StockRtInfo record);

    StockRtInfo selectByPrimaryKey(Long id);

    int updateByPrimaryKeySelective(StockRtInfo record);

    int updateByPrimaryKey(StockRtInfo record);

    /**
     * 涨幅榜
     * 沪深两市个股涨幅分时行情数据查询，以时间顺序和涨幅查询前10条数据
     *
     * @return
     */
    List<StockRtInfoVo> getStockIncrease();

    /**
     * 沪深两市个股行情列表查询，以时间顺序和涨幅排序分页查询
     *
     * @return
     */
    List<StockRtInfoVo> getStockAll();

    /**
     * 统计指定日期下涨停和跌停的数据
     *
     * @param type 涨停跌停标识，0：跌停，1：涨停
     * @return
     */
    List<Map<String, Object>> getUpDownLimitCount(@Param("type") int type);

    /**
     * 获取每天的K线数据
     *
     * @param stockCode 股票编码
     * @param startDate 开始时间，查询大于该时间的数据
     * @return
     */
    List<Map> getDayKLineData(@Param("code") String stockCode, @Param("startDate") String startDate);

    /**
     * 查询个股T日每分钟的交易数据
     *
     * @param stockCode 股票编码
     * @param tDate     当前日期
     * @return
     */
    List<Map> getStockScreenMinuteSharing(@Param("stockCode") String stockCode, @Param("tDate") String tDate);

    /**
     * 统计指定时间下股票涨跌幅度区间的数量
     *
     * @param lastDateTime
     * @return
     */
    List<Map> getStockUpDownScope(@Param("lastDateTime") String lastDateTime);

    /**
     * 批量添加个股信息
     *
     * @param stockRtInfoList
     */
    void insertBatch(@Param("stockRtInfoList") List<StockRtInfo> stockRtInfoList);

    /**
     * 根据股票代码模糊查询股票信息
     *
     * @param stockCode
     * @return
     */
    List<Map> searchStockInfoByCode(String stockCode);

    List<StockWeekVo> selectStockWeekInfo(@Param("stockCode") String stockCode, @Param("currentDate") String currentDate);

    /**
     * 根据当前时间查询开盘价和收盘价
     *
     * @param date
     * @param order
     * @return
     */
    List<Map> selectOpenAndClosePriceByDate(@Param("stockCode") String stockCode,
                                            @Param("date") String date,
                                            @Param("order") String order);

    /**
     * 个股分时行情数据
     *
     * @param stockCode   股票代码
     * @param curDateTime 当前时间
     * @return
     */
    Map getStockInfoByDateTime(@Param("stockCode") String stockCode,
                               @Param("curDateTime") String curDateTime);

    /**
     * 获取个股当天每分钟的数据
     *
     * @param curDateTimeStr
     * @return
     */
    List<Map> selectStockTradeInfo(@Param("stockCode") String stockCode, @Param("curDateTimeStr") String curDateTimeStr);
}
